工厂方法模式

工厂方法模式是对简单工厂方法的改进,将Factory类进行了抽象,工厂类不再负责创建具体的产品,其具体的生产工作交给其子类去完成。在这个模式中,具体工厂类和具体产品类可以一一对应。如一个抽象汽车工厂类,其具体工厂类为可以生产轿车和卡车,衍生出生产轿车和卡车的具体实现类。

1
2
3
4
//抽象产品类
abstract class Auto{

}
1
2
3
4
5
6
7
//具体产品类
class class Car extends Auto{

}
class Truck extends Auto{

}
1
2
3
4
//抽象工厂类
abstract class AutoFactory{
public abstract Auto createAuto();
}
1
2
3
4
5
6
7
8
9
10
11
//具体工厂类
class CarFactory extends AutoFactory{
public Auto createAuto(){
return new Car();
}
}
class TruckFactory extends AtoFactory{
public Auto createAuto(){
return new Truck();
}
}
1
2
3
4
5
6
7
8
9
//主方法
public class FactoryTest{
public static void main(String[] args){
AutoFactory factory1 = new CarFactory();
Car car = factory1.createAuto();
AutoFactory factory2 = new TruckFactory();
Truck truck = factory2.createAuto();
}
}